Systems and methods for using haptic vibration for inter device communication

ABSTRACT

The present disclosure relates to systems and methods for using haptic vibration for inter-device communication. In one implementation, a system for inter-device communication using haptic vibration may include at least one force gauge configured to measure displacements caused by an external device in contact with the at least one force gauge; at least one memory storing instructions; and at least one processor configured to execute the instructions to: receive an identifier associated with a user; retrieve a pattern associated with the received identifier; receive, from the at least one force gauge, one or more measurements over a period of time; assess a degree of difference between the received one or more measurements and the retrieved pattern; and, when the degree of difference is below a threshold, authenticate the user.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No. 16/162,593, filed Oct. 17, 2018, currently pending. The contents of the above are incorporated herein by reference.

TECHNICAL FIELD

This disclosure relates generally to the field of haptic communication. More specifically, and without limitation, this disclosure relates to systems and methods for using haptic vibration for inter-device communication.

BACKGROUND

Many devices authenticate themselves to other devices in order to perform particular functions. For example, a card associated with a customer communicates with an automated teller machine (ATM) before functions like withdrawals or deposits may be performed. In another example, a mobile phone associated with a customer communicates with a point-of-service (POS) machine to finalize a transaction with the POS machine.

However, traditional wireless communication suffers from security vulnerabilities, such as interception. Moreover, traditional physical communication such as magnetic strips, manual entry of a personal identification number (PIN), or other physical communications, may be intercepted using card skimmers, video cameras, or other devices used to capture the physically communicated information.

SUMMARY

Disclosed systems and methods for using haptic vibration for inter-device communication solve the problems associated with traditional wireless communication and physical communication systems. For example, the disclosed systems and methods may permit for easier authentication from a user perspective (e.g., because a user may use their existing smartphone rather than additional hardware such as a card and/or may not need to remember a PIN, password, or the like) while simultaneously maintaining a high level of security. For example, two-factor authorization using haptic vibration as described herein may be more secure than conventional two-factor authorization techniques because it may be difficult for wireless communicators, card skimmers, or the like to intercept such vibrations. Moreover, the disclosed systems and methods for two-factor authorization using haptic vibration as described herein may improve experiences of users because users may use their existing smartphones, tablets, or other devices, rather than carry extra contactless cards and/or may not have to remember additional identifiers such as PINs.

There are many possible applications for such capabilities. Examples of applications include authentication of users at an ATM or other kiosks. Additional examples of application may include authentication of users to authorize transactions at a retailer, authentication of users at a turnstyle or other physical barrier to allow access to a building and/or a room, or the like.

Certain embodiments of the present disclosure include or use one or more external devices. As used herein, “external device” may refer to any device capable of performing haptic vibrations. For example, an external device may comprise a smartphone, a tablet, a keychain having a haptic motor, or the like.

Certain embodiments of the present disclosure include or use one or more force gauges. As used herein, “force gauge” may refer to a device or devices capable of converting deformation of one part of the gauge into an electrical signal representative of the deformation, e.g., an analog signal or a digital signal. For example, a force gauge may comprise a spring scale, a strain gauge, or the like.

Certain embodiments of the present disclosure include or use one or more accelerometers. As used herein, “accelerometer” may refer to a device or devices capable of converting mechanical motion of one part of the gauge into an electrical signal representative of the motion, e.g., an analog signal or a digital signal. For example, an accelerometer may comprise a micro electro-mechanical systems (MEMS) accelerometer, a piezoelectric accelerometer, a piezoresistive accelerometer, a capacitive accelerometer, or the like.

Certain embodiments of the present disclosure include or use one or more scales. As used herein, “scale” may refer to a device or devices capable of converting displacement of one part of the gauge into an electrical signal representative of a mass of an object causing the displacement, e.g., an analog signal or a digital signal. For example, a scale may comprise a spring scale, a hydraulic scale, a pneumatic scale, a string gauge scale, or the like.

Certain embodiments of the present disclosure include or use one or more cards associated with a user. As used herein, “card” may refer to any physical card including an identifier of the user. For example, a card may comprise an identification card (e.g., a state-issued identification card, an institution-issued identification card, such as a university-issued card, or the like), a transaction card (e.g., a credit card, a debit card, or the like), a smart card, or the like. The card may include a human-readable identifier or a computer-readable identifier (e.g., a bar code, whether one-dimensional or matrixed, a magnetic strip, a contactless chip, or the like), or a combination thereof.

According to an exemplary embodiment of the present disclosure, a system for inter-device communication using haptic vibration may comprise at least one force gauge configured to measure displacements caused by an external device in contact with the at least one force gauge; at least one memory storing instructions; and at least one processor configured to execute the instructions to perform operations. The operations may comprise receiving an identifier associated with a user; retrieving a pattern associated with the received identifier; receiving, from the at least one force gauge, one or more measurements over a period of time; assessing a degree of difference between the received one or more measurements and the retrieved pattern; and when the degree of difference is below a threshold, authenticating the user.

According to an exemplary embodiment of the present disclosure, a system for inter-device communication using haptic vibration may comprise at least one accelerometer configured to measure strength and timing of vibrations from an external device; at least one memory storing instructions; and at least one processor configured to execute the instructions to perform operations. The operations may comprise receiving an identifier associated with a user; retrieving a pattern comprising one or more strengths with respect to time associated with the received identifier; receiving, from the at least one accelerometer, one or more measurements of strengths over a period of time; assessing a degree of difference between the received one or more measurements of strengths and the one or more strengths of the retrieved pattern; and based on the degree of difference, determining whether to authenticate the user.

According to an exemplary embodiment of the present disclosure, a system for inter-device communication using haptic vibration may comprise at least one scale configured to measure weight of an external device; at least one of a force gauge or an accelerometer configured to measure vibrations from the external device; at least one memory storing instructions; and at least one processor configured to execute the instructions to perform operations. The operations may comprise receiving, from the at least one scale, a measured weight; determining, based on the measured weight, one or more expected models of the external device; receiving an identifier associated with a user; and retrieving an expected model associated with the received identifier. When the expected model comprises one of the one or more expected models, the operations may further comprise retrieving a pattern of vibrations associated with the received identifier; receiving, from the at least one of a force gauge or an accelerometer, one or more measurements of vibrations; assessing a degree of difference between the received one or more measurements and the retrieved pattern; and when the degree of difference is below a threshold, authenticating the user.

According to an exemplary embodiment of the present disclosure, a system for calibration of inter-device communication using haptic vibration may comprise at least one scale configured to measure weight of an external device; at least one of a force gauge or an accelerometer configured to measure vibrations from the external device; at least one memory storing a table mapping models of external devices to weights and to one or more transformations and storing instructions; and at least one processor configured to execute the instructions to perform operations. The operations may comprise receiving, from a user, an identifier of the user; receiving, from the at least one scale, a measured weight of the external device; determining, using the stored table, one or more likely models for the external device; transmitting a command to the external device configured to cause the external device to vibrate according to one or more patterns; receiving, from the at least one of a force gauge or an accelerometer, one or more measurements corresponding to the one or more patterns; selecting a correct model from the one or more likely models by verifying that the mapped one or more transformations transform the one or more measurements into the one or more patterns, within a margin of error; and associating the received identifier with the selected correct model.

According to an exemplary embodiment of the present disclosure, a system for calibration of inter-device communication using haptic vibration may comprise at least one of a force gauge or an accelerometer configured to measure vibrations from the external device; at least one memory storing instructions; and at least one processor configured to execute the instructions to perform operations. The operations may comprise receiving, from a user, an identifier of the user; transmitting a command to the external device configured to cause the external device to vibrate according to one or more patterns; receiving, from the at least one of a force gauge or an accelerometer, one or more measurements corresponding to the one or more patterns; generating a data structure mapping the one or more measurements to the one or more patterns; and indexing the data structure by the received identifier.

According to an exemplary embodiment of the present disclosure, a system for calibration of inter-device communication using haptic vibration may comprise at least one scale configured to measure weight of an external device; at least one of a force gauge or an accelerometer configured to measure vibrations from the external device; at least one memory storing instructions; and at least one processor configured to execute the instructions to perform operations. The operations may comprise receiving, from a user, an identifier of the user; receiving, from the user, an indication of a model of the external device; receiving, from the at least one scale, a measured weight of the external device; transmitting a command to the external device configured to cause the external device to vibrate according to one or more patterns; receiving, from the at least one of a force gauge or an accelerometer, one or more measurements corresponding to the one or more patterns; generating a data structure mapping the one or more measurements to the one or more patterns; indexing the data structure by the received model indication; and associating the received identifier with the received model indication and the measured weight.

Additional embodiments of the present disclosure include non-transitory computer-readable media storing instructions that cause one or more processors to execute any of the methods disclosed herein.

Additional objects and advantages of the present disclosure will be set forth in part in the following detailed description, and in part will be obvious from the description, or may be learned by practice of the present disclosure. The objects and advantages of the present disclosure will be realized and attained by means of the elements and combinations particularly pointed out in the appended claims.

It is to be understood that the foregoing general description and the following detailed description are exemplary and explanatory only, and are not restrictive of the disclosed embodiments.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings, which comprise a part of this specification, illustrate several embodiments and, together with the description, serve to explain the disclosed principles. In the drawings:

FIG. 1 is a schematic representation of an example system for using haptic vibration for inter-device communication, consistent with embodiments of the present disclosure.

FIG. 2 is a graphical representation of an example comparison of haptic measurements with a haptic pattern, consistent with embodiments of the present disclosure.

FIG. 3 is a graphical representation of a transformation used to transform a haptic pattern to expected haptic measurements, consistent with embodiments of the present disclosure.

FIG. 4 is a flowchart of an exemplary method for inter-device communication using haptic vibration, consistent with embodiments of the present disclosure.

FIG. 5 is a flowchart of an exemplary method for calibration of inter-device communication using haptic vibration, consistent with embodiments of the present disclosure.

FIG. 6 is a depiction of an exemplary haptic keychain, consistent with embodiments of the present disclosure.

FIG. 7A is a depiction of an exemplary haptic smartphone, consistent with embodiments of the present disclosure.

FIG. 7B is a side view of the device of FIG. 7A.

FIG. 8 is a depiction of an exemplary server for executing methods consistent with the present disclosure.

DETAILED DESCRIPTION

The disclosed embodiments relate to systems and methods for using haptic vibration for inter-device communication. Embodiments of the present disclosure may be implemented using one or more general purpose computers in combination with at least one haptic motor and at least one sensor (e.g., an accelerometer, a force gauge, or the like). Alternatively or concurrently, one or more special purpose computer may be built according to embodiments of the present disclosure using suitable circuit elements, e.g., one or more application-specific integrated circuits or the like, in combination with at least one haptic motor and at least one sensor (e.g., an accelerometer, a force gauge, or the like).

FIG. 1 is a schematic representation of example system 100 for implementing inter-device communication using haptic vibration. System 100 may include a kiosk 101. For example, kiosk 101 may comprise an automated teller machine (ATM), an entry gate for a building or room, or the like. In some embodiments, kiosk 101 may comprise server 800 of FIG. 8 or communicate with server 800 of FIG. 8. For example, kiosk 101 may contact server 800 in order to authenticate users attempting to access kiosk 101 (e.g., if kiosk 101 is an ATM, access may comprise a withdrawal or a deposit) or to access an area protected by kiosk 101 (e.g., if kiosk 101 is an entry gate or a security system, access may comprise physical access to an area, such as a room or building, gated off by or armed by kiosk 101).

Kiosk 101 may include or communicate with at least two sensors, e,g., sensor 105 a and sensor 105 b. Sensor 105 a may be configured to communicate with an external device 103 while sensor 105 b may be configured to communicate with an identifier device 109 providing an identifier. In some embodiments, external device 103 may comprise keychain 600 of FIG. 6, smartphone 700 of FIGS. 7A and 7B, a tablet, or any other device having a haptic motor and configured to vibrate using the haptic motor. Accordingly, sensor 105 a may comprise a force gauge, an accelerometer, or any other sensor configured to detect the vibrations of external device 103.

In some embodiments, identifier device 109 may comprise a card, another keychain, another smartphone, another tablet, or any other device capable of communicating an identifier to kiosk 101. Accordingly, sensor 105 b may comprise a magnetic strip reader, a contactless reader, a barcode scanner, or any other sensor configured to extract an identifier from identifier device 109.

In some embodiments, as an alternative to external device 103 and identifier device 109, system 100 may include a single device that is configured to communicate vibrations to sensor 105 a as well as to communicate an identifier to sensor 105 b. For example, the single device may comprise a smartphone (e.g., smartphone 700 of FIGS. 7A and 7B) or a tablet having a haptic motor as well as contactless communication capabilities, a keychain (e.g., keychain 600 of FIG. 6) having a haptic motor as well as contactless communication capabilities, or the like.

External device 103 may further be configured to communicate with kiosk 101 using a computer network, e.g., network 107 a. Network 107 a may comprise the Internet, a local area network (LAN), or the like, and may use one or more wireless standards, such as Wi-Fi, 4G, long-term evolution (LTE), or the like, and/or one or more wired standards, such as Ethernet, token ring, or the like. Alternatively, network 107 a may comprise a short-range communication link established using one or more standards, such as near-field communication (NFC), Bluetooth®, or the like. Accordingly, external device 103 may receive commands from kiosk 101, e.g., including commands to vibrate according to a pattern from kiosk 101 and/or a pattern stored on external device 103. In some embodiments, the pattern may comprise a collection of vibrations characterized by amplitudes and frequencies of the vibrations with respect to time. In some embodiments, pattern may not be limited to “regular” patterns (e.g., sinusoidal or the like). That is, such patterns may include irregularities in amplitudes and frequencies and may not be uniform.

Identifier device 109 may also be configured to communicate with kiosk 101 using a computer network, e.g., network 107 b. Although depicted separately, network 107 b may comprise, at least in part, network 107 a. Network 107 b may comprise the Internet, a LAN, or the like and may use one or more wireless standards, such as Wi-Fi, 4G, LTE, or the like, and/or one or more wired standards, such as Ethernet, token ring, or the like. Alternatively, network 107 b may comprise a short-range communication link established using one or more standards, such as NFC, Bluetooth®, or the like.

In any of the embodiments described above, sensor 105 b may be optional; in such cases, identifier device 109 may communicate the identifier to kiosk 101 via network 107 b. For example, if identifier device 109 comprises a contactless card, a smartphone, a tablet, a contactless keychain, or the like, kiosk 101 may receive the identifier using a short-range communication link established using one or more standards, such as NFC, Bluetooth®, or the like and/or using a computer network, such as the Internet, a LAN, or the like, operating using one or more wireless standards, such as Wi-Fi, 4G, LTE, or the like.

Accordingly, system 100 may allow for two-factor authentication of a user having external device 103 and identifier device 109 (or, in embodiments where external device 103 and identifier device 109 comprise a same, single device, the single device). For example, kiosk 101 may receive an identifier of the user from identifier device 109 and determine a predicted pattern of vibration expected from external device 103. For example, the predicted pattern of vibration may comprise a stored pattern of vibration associated with the identifier. Alternatively, kiosk 101 may transmit a command to external device 103 that is associated with the identifier, and thus the predicted pattern of vibration may comprise the pattern transmitted to external device 103.

In some embodiments, as explained below with respect to FIG. 3, kiosk 101 may transform the predicted pattern into predicted measurements from external device 103 and/or transform measurements from external device 103 into a pattern for comparison against the predicted pattern.

Moreover, as explained below with respect to FIG. 2, kiosk 101 may authenticate user based on a degree of difference between the predicted measurements and measurements from sensor 105 a and/or between the predicted pattern and the pattern for comparison based on measurements from sensor 105 a.

Although not depicted in FIG. 1, system 100 may further include at least one scale. For example, the at least one scale may measure the weight of external device 103. The at least one scale may be used in authenticating the user. For example, the identifier may be associated with a weight, and the authentication may be further based on a degree of difference between a measured weight of external device 103 and the weight associated with the identifier. Additionally or alternatively, the at least one scale may be used to select a transformation for the predicted pattern to predicted measurements and/or for the measurements to a pattern for comparison. For example, the measured weight may be used to select one or more possible models for external device 103, each model being associated with one or more transformations.

Moreover, the scale may be used to calibrate kiosk 101. For example, kiosk 101 may measure the weight of external device 103 and may also transmit a pattern of vibrations to external device 103. Accordingly, kiosk 101 may receive measurements from sensor 105 a corresponding to the pattern of vibrations. Kiosk 101 may thus store the measurements, the pattern of vibrations, a transformation from the measurements to the pattern, a transformation from the pattern to the measurements, or a combination thereof in associated with the measured weight. Furthermore, kiosk 101 may receive an indicator of a model of external device 103 and index the data structure storing the measured weight with the associated measurements, pattern of vibrations, transformation from the measurements to the pattern, transformation from the pattern to the measurements, or combination thereof with the model indicator. In some embodiments, this calibration may be performed remotely from kiosk 101 such that the indexed data structure is transferred to kiosk 101 for storage and/or is retrievable by kiosk 101 (e.g., from a server remote from kiosk 101).

In some embodiments, kiosk 101 may perform a calibration without at least one scale. For example, kiosk 101 may transmit a pattern of vibrations to external device 103. Kiosk 101 may receive measurements from sensor 105 a corresponding to the pattern of vibrations. Kiosk 101 may thus store the measurements, the pattern of vibrations, a transformation from the measurements to the pattern, a transformation from the pattern to the measurements, or a combination thereof in associated with a received indicator of a model of external device 103. Thus, in some embodiments, kiosk 101 may index the data structure storing the associated measurements, pattern of vibrations, transformation from the measurements to the pattern, transformation from the pattern to the measurements, or combination thereof with the received model indicator. In some embodiments, this calibration may be performed remotely from kiosk 101 such that the indexed data structure is transferred to kiosk 101 for storage and/or is retrievable by kiosk 101 (e.g., from a server remote from kiosk 101).

During calibration, kiosk 101 may display a message to a user to remove a case or other cover from external device 103. For example, the case or other cover may alter the measurements (e.g., from the at least one scale and/or caused by the vibrations) such that they no longer correlate to the indicator of the model of external device 103. Alternatively, kiosk 101 may calibrate external device 103 with the case or other cover present on external device 103. Accordingly, a pattern and/or transformation stored in associated with the identifier of the user and/or the indicator of the model may account for the case and/or other cover. In some embodiments, the indicator of the model may further include a sub-indicator of the model for the case and/or other cover, if any.

FIG. 2 depicts an example graphical representation 200 of a degree of difference between a set of measurements and a pattern of vibrations. In the example of FIG. 2, the “Error” represents a function (mathematically, a correspondence between the domain, time in the example of FIG. 2, and the range, amplitudes or other measures of vibrational strength in the example of FIG. 2, such that each member of the set comprising the domain corresponds to a single member of the set comprising the range) that is the difference between the “Pattern” function and the “Measurements” function. In some embodiments, the difference may be signed while, in other embodiments, the difference may be unsigned.

In the example of FIG. 2, the haptic vibrations may be encoded as strengths with respect to time such that the values of the functions are all positive. For example, peaks S1, S2, and S3 all represent spikes in strengths of vibrations, which represent underlying sinusoidal or other periodic vibrations caused by a haptic motor, e.g., of external device 103 of FIG. 1. In alternative embodiments, the haptic vibrations may be encoded as the periodic vibrations such that the values of the functions oscillate between positive and negative.

Although depicted as a difference, one or more other measures may be used as the degree of difference or as a basis for determining the degree of difference. For example, an autocorrelation between the “Pattern” function and the “Measurements” function, convolution between the “Pattern” function and the “Measurements” function, or the like may be used to determine the degree of difference, which may be a maximum of the autocorrelation function, a minimum of the autocorrelation function, an unsigned area of the autocorrelation function, or the like. Moreover, although depicted as continuous in FIG. 2, one or more of the “Error” function, the “Pattern” function, and the “Measurements” function may be discontinuous (e.g., comprising, graphically, a scatter plot rather than a solid line). For example, the “Pattern” function may comprise discrete vibrational strengths representing commands to a haptic motor and/or the “Measurements” function may comprise discrete measurements from sensor 105 a of FIG. 1.

The “Error” function may be used as the degree of difference to authenticate the user. For example, the degree of difference may be assessed as a maximum of the “Error” function, a minimum of the “Error” function, an integral of the “Error” function, or other measurements of the magnitude of the “Error” function at one or more times (or a combination of times). Accordingly, when the degree of difference is below a threshold, the system (e.g., kiosk 101 of FIG. 1) may authenticate the user while, when the degree of difference is above a threshold, the system (e.g., kiosk 101 of FIG. 1) may deny access to the user. In some embodiments, the system (e.g., kiosk 101 of FIG. 1) may employ a multi-tiered authentication scheme. For example, when the degree of difference is below a first threshold, the system (e.g., kiosk 101 of FIG. 1) may authenticate the user, when the degree of difference is above the first threshold but below a second, higher threshold, the system (e.g., kiosk 101 of FIG. 1) may prompt the user for an additional credential (e.g., a PIN, a password, or the like), and when the degree of difference is above the second threshold, the system (e.g., kiosk 101 of FIG. 1) may deny access to the user.

FIG. 3 depicts an example graphical representation 300 of a transformation from a pattern of vibrations to an expected set of measurements. In the example of FIG. 2, the “Transformation” represents a function (mathematically, a correspondence between the domain, time in the example of FIG. 3, and the range, amplitudes or other measures of vibrational strength in the example of FIG. 3, such that each member of the set comprising the domain corresponds to a single member of the set comprising the range) that transforms the “Pattern” function into the “Expected Measurements” function. Alternatively, the “Transformation” function may represent a function that transforms a “Measurements” function into an “Expected Pattern” function. Accordingly, the “Expected Measurements” function and a “Measurements” function or the “Pattern” function and an “Expected Pattern” function may be compared as explained above with respect to FIG. 2. For example, the system (e.g., kiosk 101 of FIG. 1) may authenticate a user based on a degree of difference between the “Expected Measurements” function and the “Measurements” function. Similarly, the system (e.g., kiosk 101 of FIG. 1) may authenticate a user based on a degree of difference between the “Expected Pattern” function and the “Pattern” function.

In the example of FIG. 3, similar to the example of FIG. 2, the haptic vibrations may be encoded as strengths with respect to time such that the values of the functions are all positive. For example, peaks S1, S2, and S3 all represent spikes in strengths of vibrations, which represent underlying sinusoidal or other periodic vibrations caused by a haptic motor, e.g., of external device 103 of FIG. 1. In alternative embodiments, the haptic vibrations may be encoded as the periodic vibrations such that the values of the functions oscillate between positive and negative.

Although the “Transformation” function is depicted as multiplicative, one or more other transformations may be used, such as an additive transformation, a Fourier transformation, a translational transformation, or the like. Moreover, although depicted as continuous in FIG. 2, one or more of the “Transformation” function, the “Pattern” function, and the “Expected Measurements” function may be discontinuous (e.g., comprising, graphically, a scatter plot rather than a solid line). For example, the “Pattern” function may comprise discrete vibrational strengths representing commands to a haptic motor and/or the “Expected Measurements” function may comprise discrete measurements expected from sensor 105 a of FIG. 1.

The “Transformation” function may represent a function selected by the system (e.g., kiosk 101 of FIG. 1 or server 800 of FIG. 8) based on a measured weight and/or a received model of external device 103 of FIG. 1. For example, the system (e.g., kiosk 101 of FIG. 1 or server 800 of FIG. 8) may receive an indicator of the model of external device 103 of FIG. 1 and retrieve one or more “Transformation” functions indexed to the received indicator. Additionally or alternatively, the system (e.g., kiosk 101 of FIG. 1 or server 800 of FIG. 8) may measure a weight (e.g., using at least one scale) of the model of external device 103 of FIG. 1 and retrieve one or more “Transformation” functions indexed to the measured weight (optionally plus or minus a predetermined margin of error, such as one gram, two grams, 1%, 2%, 5%, or the like). Accordingly, the system (e.g., kiosk 101 of FIG. 1 or server 800 of FIG. 8) may then use the one or more “Transformation” functions to authenticate a user, as explained above.

In embodiments where the system (e.g., kiosk 101 of FIG. 1 or server 800 of FIG. 8) retrieves more than one “Transformation” function, the system may apply the plurality of “Transformation” functions to generate a plurality of “Expected Measurements” or “Expected Pattern” functions and select the corresponding “Expected Measurements” or “Expected Pattern” function that minimizes a degree of difference between the “Expected Measurements” function and a “Measurements” function or the “Expected Pattern” function and a “Pattern” function.

FIG. 4 is a flowchart of exemplary method 400 for inter-device communication using haptic vibration. Exemplary method 400 may be implemented by, for example, one or more processors of kiosk 101 of FIG. 1 and/or server 800 of FIG. 8. Exemplary method 400 may further be implemented using a general purpose computer or special purpose computer having at least one processor.

At step 401, the processor may receive an identifier associated with a user. For example, as explained above with respect to FIG. 1, kiosk 101 may receive an identifier from device 103 using sensor 105 b.

In some embodiments, a contactless reader may receive the identifier from a contactless device associated with the user. In such embodiments, the contactless device may comprise the same device that vibrates (as explained below in step 405). Alternatively, as explained above with respect to FIG. 1, the contactless device (e.g., device 103) may comprise a contactless card (e.g., using NFC or radio frequency identification (RFID) technology), a portable contactless device (e.g., a contactless keychain such as keychain 600, a contactless fob, etc.), or the like.

Additionally or alternatively, a card reader may receive the identifier from a card associated with the user. For example, as explained above, the card may comprise a debit card, credit card, identification card, or any other card including the identifier that is extractable by sensor 105 b of FIG. 1.

Additionally or alternatively, one or more input keys may receive the identifier from the user. For example, the identifier may comprise a personal identification number (PIN) entered by the user using a keypad, keyboard, or the like.

At step 403, the processor may retrieve a pattern associated with the received identifier. In some embodiments, the pattern may comprise one or more strengths with respect to time, as depicted above in FIG. 2. In some embodiments, the pattern comprises a plurality of expected measurements over the period of time, as depicted above in FIG. 3.

At step 405, the processor may receive, from at least one of a force gauge or an accelerometer, one or more measurements over a period of time. For example, measurements may be received from sensor 105 a of FIG. 1, as explained above. In some embodiments, the one or more measurements may comprise measurements of strengths of vibrations, e.g., of external device 103 of FIG. 1.

At step 407, the processor may assess a degree of difference between the received one or more measurements and the retrieved pattern. For example, the degree of difference may be determined as explained above with respect to FIG. 2. In embodiments where the pattern comprises one or more strengths, the degree of difference may be between the received one or more measurements of strengths and the one or more strengths of the retrieved pattern.

In some embodiments, the degree of difference may depend on a combination of difference magnitudes between a measured strength and a strength of the retrieved pattern at each of a plurality of intervals over the period of time. For example, as explained above with respect to FIG. 2, the degree of difference may be determined based on a subtraction (whether signed or unsigned) of the measurements (or from an expected pattern as explained with respect to FIG. 3) from the retrieved pattern (or from expected measurements as explained with respect to FIG. 3). Alternatively, the degree of difference may depend on an autocorrelation of a function representing the one or more measured strengths over time and a function representing the one or more strengths of the retrieved pattern over time. For example, the degree of difference may comprise a maximum or a minimum of the autocorrelation function, an unsigned area (e.g., an integral) of the autocorrelation function, or the like.

When the degree of difference is below a threshold, the processor may determine whether to authenticate the user. For example, method 400 may then trifurcate. For example, at step 409 a, the processor may prompt the user for an additional verification, such as a PIN, a password, or the like. At step 409 b, the processor may authenticate the user. At step 409 c, the processor may deny access to the user. Two thresholds may delineate steps 409 a, 409 b, and 409 c. For example, as described above, the processor may authenticate the user when the degree of difference is below both thresholds, prompt the user for the additional verification when the degree of difference is between the thresholds, and deny access when the degree of difference is above both thresholds.

Although depicted as trifurcating, other variations of method 400 are possible. For example, method 400 may bifurcate such that the processor authenticates the user when the degree of difference below a threshold and prompts the user for additional verification when the degree of difference is above the threshold. In another example, method 400 may bifurcate such that the processor prompts the user for the additional verification when the degree of difference is below a threshold and denies access when the degree of difference is above the threshold.

In any of the embodiments described above, a plurality of additional verifications may be used. For example, the processor may authenticate the user when the degree of difference is below both thresholds, prompt the user for a first additional verification when the degree of difference is between the thresholds, and prompt the user for a second additional verification when the degree of difference is above both thresholds. In another example, the processor may prompt the user for a first additional verification when the degree of difference is below both thresholds, prompt the user for a second additional verification when the degree of difference is between the thresholds, and deny access when the degree of difference is above both thresholds. Although described above using two additional verifications, any number of additional verifications in combination with any number of thresholds may be used. The additional verifications may increase in complexity in tandem with increases in the degree of difference. For example, the first additional verification may comprise a PIN, and the second additional verification may comprise a password. In another example, the first additional verification may comprise a PIN, and the second additional verification may comprise a biometric (e.g., a fingerprint or the like).

In any of the embodiments described above, one or more of the thresholds may be dynamic. For example, one or more of the thresholds may be adjusted based on a degree of difference between a measured weight of external device 103 and an expected weight of external device 103, as explained further below. In another example, one or more thresholds may be adjusted based on a degree of vulnerability associated with the received identifier. For example, a user whose account has been hacked previously may be associated with lower (that is, stricter) thresholds than another user whose account has not been hacked previously.

Method 400 may include additional steps. For example, method 400 may include determining, based on the identifier, an expected model of the external device and converting the retrieved pattern to the plurality of expected measurements based on the expected model. As explained above with respect to FIG. 1, a database may map user identifiers to expected models, which are further mapped to one or more transformations (as explained above with respect to FIG. 3). Alternatively to converting the retrieved pattern, the one or more transformations may convert the one or more measurements to an expected pattern. In some embodiments, the processor may have previously received the expected model from the user and stored the expected model in the at least one memory for retrieval. For example, the user may provide the model during a registration procedure and/or during a calibration process, e.g., method 500 of FIG. 5 explained below.

Additionally or alternatively, method 400 may include receiving, from the at least one scale, a measured weight and determining, based on the measured weight, one or more expected models of the external device. For example, as explained above with respect to FIG. 1, a database may map, weights to one or more models. Based on a margin of error (e.g., 1 gram, 2 grams, 1%, 2%, 5%, or the like), the processor may determine the one or more expected models. In such embodiments, method 400 may further include retrieving an expected model associated with the received identifier, as explained above. Accordingly, when the expected model comprises one of the one or more expected models, the processor may proceed to retrieve a pattern of vibrations associated with the received identifier (as explained above); receive, from the least one of a force gauge or an accelerometer, one or more measurements of vibrations (as explained in step 405 above); assess a degree of difference between the received one or more measurements and the retrieved pattern (as explained in step 407 above); and when the degree of difference is below a threshold, determine whether to authenticate the user (as explained in steps 409 a, 409 b, and 409 c above). Accordingly, the use of a non-registered and/or non-calibrated device may be prevented by refusing to accept measurements caused by vibrations of a device having a weight not within a margin of error of the weight of the expected model associated with the user identifier.

In any of the embodiments described above, the expected model may comprise at least one of a weight associated with the external device and a vibrational frequency associated with the external device. For example, the vibrational frequency may map a series of forces, accelerations, or the like measured by the at least one of a force gauge or an accelerometer to positive measurements of the amplitudes of those vibrations, as discussed with respect to FIGS. 2 and 3.

In any of the embodiments described above, method 400 may further include activating the at least one accelerometer (e.g., providing power to, e.g., by closing one or more switches) after receiving the identifier and/or disabling the at least one accelerometer (e.g., by eliminating power to it, e.g., by opening one or more switches) after determining to authenticate (or deny access to) the user.

FIG. 5 is a flowchart of exemplary method 500 for calibration of inter-device communication using haptic vibration. Exemplary method 500 may be implemented by, for example, one or more processors of kiosk 101 of FIG. 1 and/or server 800 of FIG. 8. Exemplary method 500 may further be implemented using a general purpose computer or special purpose computer having at least one processor.

At step 501, the processor may receive, from a user, an identifier of the user. For example, step 501 may be performed similarly to step 401 of method 400, as described above with respect to FIG. 4.

In some embodiments, the processor may further receive, from at least one scale, a measured weight of the external device. In such embodiments, the processor may determine, using a stored table, one or more likely models for the external device. For example, as explained above with respect to FIG. 1, the stored table may associate weights with expected models. As further explained above, the one or more likely models may be selected based on a margin of error (e.g., 1 gram, 2 grams, 1%, 2% 5%, or the like).

At step 503, the processor may transmit a command to the external device configured to cause the external device to vibrate according to one or more patterns. For example, as explained above with respect to FIG. 1, the processor may transmit the command over a computer network (e.g., networks 107 a/107 b) and/or using a short-range communication link such as NFC, Bluetooth®, or the like. The command may be randomly generated by the processor or previously stored in a table accessible by the processor.

At step 505, the processor may receive, from the at least one of a force gauge or an accelerometer, one or more measurements corresponding to the one or more patterns, e.g., as depicted above in FIG. 2.

At step 507, the processor may select a correct model from the one or more likely models by verifying that the mapped one or more transformations transform the one or more measurements into the one or more patterns, within a margin of error. For example, as explained above with respect to FIGS. 2 and 3, one or more transformations that reduce a degree of difference may be selected. Accordingly, the processor may associate the received identifier with the selected correct model.

Alternatively, the processor may generate a data structure mapping the one or more measurements to the one or more patterns and index the data structure by the received identifier. For example, the data structure may function similar to a transformation by mapping particular portions of one or more patterns to one or more particular measurements.

Additionally or alternatively, the processor may receive, from the user, an indication of a model of the external device. In such embodiments, the generated data structure may additionally or alternatively be indexed by the received model indication.

Method 500 may include additional steps. For example, method 500 may include receiving, from the at least one scale, a measured weight of the external device. In such embodiments, the processor may associate the received identifier with the received model indication and the measured weight.

FIG. 6 is a depiction of example keychain 600 that may, for example, be used as external device 103 of FIG. 1. As depicted in FIG. 6, keychain 600 may include a transponder 601, a control circuit 603, a battery 605, and a haptic motor 607. Accordingly, as depicted in FIG. 6, battery 605 may power transponder 601, control circuit 603, and haptic motor 607.

In some embodiment, transponder 601 may comprise a transceiver, e.g., operating in a radio frequency range or other frequency of light used to send and receive signals. In other embodiments, transponder 601 may comprise a receiver that only receives signals and does not transmits signals. In such embodiments, keychain 600 may further comprise a button or other manual input mechanism, e.g., to activate haptic motor 607.

Battery 605 may comprise a nickel-iron battery, a lithium ion battery, or other battery that may be re-chargeable or non-rechargeable. Battery 605 may be replaceable, e.g., by opening keychain 600 along a junction between one or more pieces (e.g., of plastic, of metal, or the like) forming a housing for transponder 601, control circuit 603, battery 605, and haptic motor 607. Alternatively, battery 605 may be integral to keychain 600.

Haptic motor 607 may comprise an eccentric rotating mass (ERM) haptic motor, a linear resonant actuator (LRA) haptic motor, or any other device configured to transform electric power from battery 605 into rotational energy and/or vibrational energy. Control circuit 603 may comprise a microprocessor or any other circuit controlling the content transmitted by transponder 601 and/or the pattern of vibrations caused by haptic motor 607. For example, control circuit 603 may control timing, intensity, or other properties of a radio frequency signal transmitted by transponder 601 and/or timing, intensity, or other properties of the vibrations caused by haptic motor 607. Accordingly, control circuit 603 may comprise a clock circuit or other circuit controlling such properties. Control circuit 603 may control one or more properties of the vibrations signal based on a control signal received by transponder 601. For example, kiosk 101 of FIG. 1 may execute, at least in part, method 500 of FIG. 5 and transmit a corresponding control signal to adjust the vibrations of haptic motor 607. Alternatively, control circuit 603 may activate stored controls based on a prompting signal received by transponder 601. For example, the stored controls may comprise a stored pattern previously received by transponder 601 and associated with an identifier of a user, e.g., as stored in associated on kiosk 101 of FIG. 1 or server 800 of FIG. 8.

In some embodiments, keychain 600 may be implemented as a portable contactless device (e.g., a contactless fob).

FIG. 7A is a depiction of an example smartphone 700 that may, for example, be used as external device 103 of FIG. 1. As depicted in FIG. 7A, device 700 may comprise a smartphone or tablet. Device 700 may have a screen 701. For example, screen 701 may display one or more graphical user interfaces (GUIs) that allow a user of device 700 to send information to and receive information from one or more computer networks. In certain aspects, screen 701 may comprise a touchscreen to facilitate use of the one or more GUIs.

As further depicted in FIG. 7A, device 700 may have one or more buttons, e.g., buttons 703 a and 703 b. For example, buttons 703 a and 703 b may facilitate use of one or more GUIs displayed on screen 701.

FIG. 7B is a side view of user interface device 700 of FIG. 7A. As depicted in FIG. 7B, device 700 may have at least one processor 705. For example, at least one processor 705 may comprise a system-on-a-chip (SOC) adapted for use in a portable device, such as device 700. Alternatively or concurrently, at least one processor 705 may comprise any other type(s) of processor.

As further depicted in FIG. 7B, device 700 may include a network interface 709. For example, network interface 709 may comprise a wireless interface, e.g., a network interface card (NIC) configured to utilize Wi-Fi, Bluetooth, 4G, etc. In other embodiments, network interface 709 may comprise a wired interface, e.g., an NIC configured to utilize Ethernet, Token Ring, etc. In some embodiments, network interface 709 may permit device 700 to send information to and receive information from one or more computer networks.

As further depicted in FIG. 7B, device 700 may have one or more memories, e.g., memories 707 a and 707 b. In certain aspects, some of the one or more memories, e.g., memory 707 a, may comprise a volatile memory. In such aspects, memory 707 a, for example, may store one or more applications (or “apps”) for execution on at least one processor 705. For example, an app may include an operating system for device 700 and/or an app for executing one or more steps of methods disclosed herein. In addition, an app may be used to send data to and receive data from one or more computer networks, e.g., data sent and received to kiosk 101 of FIG. 1 and/or server 800 of FIG. 8 in accordance with one or more steps of methods disclosed herein. In addition, memory 707 a may store data generated by, associated with, or otherwise unrelated to an app in memory 707 a.

Alternatively or concurrently, some of the one or more memories, e.g., memory 707 b, may comprise a non-volatile memory. In such aspects, memory 707 b, for example, may store one or more applications (or “apps”) for execution on at least one processor 705. For example, as discussed above, an app may include an operating system for device 700, an app for executing one or more steps of methods disclosed herein, and/or an app for sending data to and receiving data from one or more computer networks, e.g., data sent and received in accordance with one or more steps of methods disclosed herein. In addition, memory 707 b may store data generated by, associated with, or otherwise unrelated to an app in memory 707 b. Furthermore, memory 707 b may include a pagefile, swap partition, or other allocation of storage to allow for the use of memory 707 b as a substitute for a volatile memory if, for example, memory 707 a is full or nearing capacity.

FIG. 8 is a depiction of an example server 800 for inter-device communication using haptic vibration and/or calibration of inter-device communication using haptic vibration. Server 800 of FIG. 8 may comprise or be in communication with kiosk 101 of FIG. 1. As depicted in FIG. 8, server 800 may have a processor 801. Processor 801 may comprise a single processor or a plurality of processors. For example, processor 801 may comprise a CPU, a GPU, a reconfigurable array (e.g., an FPGA or other ASIC), or the like.

Processor 801 may be in operable connection with a memory 803, an input/output module 805, and a network interface controller (NIC) 807. Memory 803 may comprise a single memory or a plurality of memories. In addition, memory 803 may comprise volatile memory, non-volatile memory, or a combination thereof. As depicted in FIG. 8, memory 803 may store one or more operating systems 809 and a credentialing service 811. For example, calibration service 811 a may include instructions to execute all or part of method 500 of FIG. 5. Similarly, authentication service 811 b may include instructions to execute all or part of method 400 of FIG. 4. Accordingly, processor 801 may execute all or part of method 400 of FIG. 4 and/or method 500 of FIG. 5. In addition, memory 803 may store data 813 produced by, associated with, or otherwise unrelated to operating system 809 and/or credentialing service 811.

Input/output module 805 may store and retrieve data from one or more databases 815. For example, database(s) 815 may include data structures indexed by weight and/or model, as described above. Additionally or alternatively, database(s) 815 may include identifiers of users, whether encrypted or unencrypted.

NIC 807 may connect server 800 to one or more computer networks. In the example of FIG. 8, NIC 807 connects server 800 to the Internet. Server 800 may receive data and instructions over a network using NIC 807 and may transmit data and instructions over a network using NIC 807.

The foregoing description has been presented for purposes of illustration. It is not exhaustive and is not limited to precise forms or embodiments disclosed. Modifications and adaptations of the embodiments will be apparent from consideration of the specification and practice of the disclosed embodiments. For example, the described implementations include hardware and software, but systems and methods consistent with the present disclosure can be implemented with hardware alone. In addition, while certain components have been described as being coupled to one another, such components may be integrated with one another or distributed in any suitable fashion.

Moreover, while illustrative embodiments have been described herein, the scope includes any and all embodiments having equivalent elements, modifications, omissions, combinations (e.g., of aspects across various embodiments), adaptations and/or alterations based on the present disclosure. The elements in the claims are to be interpreted broadly based on the language employed in the claims and not limited to examples described in the present specification or during the prosecution of the application, which examples are to be construed as nonexclusive. Further, the steps of the disclosed methods can be modified in any manner, including reordering steps and/or inserting or deleting steps.

Instructions or operational steps stored by a computer-readable medium may be in the form of computer programs, program modules, or codes. As described herein, computer programs, program modules, and code based on the written description of this specification, such as those used by the controller, are readily within the purview of a software developer. The computer programs, program modules, or code can be created using a variety of programming techniques. For example, they can be designed in or by means of Java, C, C++, assembly language, or any such programming languages. One or more of such programs, modules, or code can be integrated into a device system or existing communications software. The programs, modules, or code can also be implemented or replicated as firmware or circuit logic.

The features and advantages of the disclosure are apparent from the detailed specification, and thus, it is intended that the appended claims cover all systems and methods falling within the true spirit and scope of the disclosure. As used herein, the indefinite articles “a” and “an” mean “one or more.” Similarly, the use of a plural term does not necessarily denote a plurality unless it is unambiguous in the given context. Words such as “and” or “or” mean “and/or” unless specifically directed otherwise. Further, since numerous modifications and variations will readily occur from studying the present disclosure, it is not desired to limit the disclosure to the exact construction and operation illustrated and described, and accordingly, all suitable modifications and equivalents may be resorted to, falling within the scope of the disclosure.

Other embodiments will be apparent from consideration of the specification and practice of the embodiments disclosed herein. It is intended that the specification and examples be considered as example only, with a true scope and spirit of the disclosed embodiments being indicated by the following claims. 

What is claimed is:
 1. A system for calibration of a device for inter-device communication, the system comprising: at least one scale configured to measure weight of an external device; at least one vibration sensor configured to measure vibrations from the external device; at least one memory storing: a table mapping models of external devices to weights and to transformations; and instructions; and at least one processor configured to execute the instructions to perform operations, the operations comprising: receiving, from a user, an identifier of the user; receiving, from the at least one scale, a measured weight of the external device; determining, using the stored table, likely models for the external device; transmitting to the external device a command to cause the external device to vibrate according to one or more commanded patterns; receiving, from the at least one vibration sensor, one or more measurements corresponding to the one or more commanded patterns; selecting one of the likely models having a mapped transformation that transforms the received measurement into the one or more commanded patterns, within a first margin of error; and associating the received identifier with the selected model.
 2. The system of claim 1, further comprising at least one of a magnetic strip reader, a contactless reader, or a barcode scanner configured to receive the user identifier.
 3. The system of claim 1, wherein receiving the user identifier comprises wirelessly receiving the user identifier from the external device.
 4. The system of claim 1, wherein selecting the likely model comprises determining that a weight in the table corresponds to the measured weight, within a second margin of error.
 5. The system of claim 4, wherein the second margin of error comprises 2 grams or less.
 6. The system of claim 4, wherein the second margin of error comprises 5% or less.
 7. The system of claim 1, wherein the one or more transformations comprise at least one of multiplicative, additive, Fourier, or translational transformations.
 8. The system of claim 1, wherein the first margin of error comprises a threshold on a degree of difference between the transformed one or more measurements and the one or more commanded patterns.
 9. The system of claim 8, wherein the degree of difference comprises an unsigned difference.
 10. The system of claim 8, wherein the degree of difference comprises an autocorrelation function.
 11. The system of claim 8, wherein the at least one processor applies the threshold to at least one of a maximum, a minimum, a signed integral, or an unsigned integral of the degree of difference.
 12. A system for calibration of a device for inter-device communication, the system comprising: at least one vibration sensor configured to measure vibrations from the external device; at least one memory storing instructions; and at least one processor configured to execute the instructions to perform operations, the operations comprising: receiving, from a user, an identifier of the user; transmitting to the external device a command to cause the external device to vibrate according to one or more commanded patterns; receiving, from the at least one vibration sensor, one or more measurements corresponding to the one or more commanded patterns; generating a data structure mapping the one or more received measurements to the one or more commanded patterns; and indexing the data structure by the received identifier.
 13. The system of claim 12, wherein the operations further comprise: receiving, from the user, an indication of a model of the external device; and further indexing the data structure by the received model indication.
 14. The system of claim 12, wherein the operations further comprise: receiving, from a remote device, a request for the indexed data structure; and transmitting, in response to the request, the indexed data structure.
 15. The system of claim 12, wherein transmitting the command comprises sending the command using a short-range communication link.
 16. The system of claim 12, wherein the at least one vibration sensor comprises a micro electro-mechanical systems (MEMS) accelerometer, a piezoelectric accelerometer, a piezoresistive accelerometer, or a capacitive accelerometer.
 17. The system of claim 12, wherein the at least one vibration sensor comprises a spring scale or a strain gauge.
 18. The system of claim 12, further comprising at least one scale configured to measure a weight of the external device, and wherein the operations further comprise further indexing the data structure by the measured weight.
 19. The system of claim 18, wherein the at least one scale comprises a spring scale, a hydraulic scale, a pneumatic scale, or a string gauge scale.
 20. A system for calibration of a device for inter-device communication, the system comprising: at least one scale configured to measure weight of an external device; at least one vibration sensor configured to measure vibrations from the external device; at least one memory storing instructions; and at least one processor configured to execute the instructions to perform operations, the operations comprising: receiving, from a user, an identifier of the user; receiving, from the user, an indication of a model of the external device; receiving, from the at least one scale, a measured weight of the external device; transmitting to the external device a command to cause the external device to vibrate according to one or more commanded patterns; receiving, from the at least one vibration sensor, one or more measurements corresponding to the one or more commanded patterns; generating a data structure mapping the one or more received measurements to the one or more commanded patterns; indexing the data structure by the received model indication; and associating the received identifier with the received model indication and the measured weight. 